import requests
import json
def spider1():
    ## 第一个url用来获取id，和最大页数
    url1 = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList'
    ## 第二个url，获取所需要的json数据
    url2 = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById'
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
    }
    ## 第一个urlpost请求需要的数据，page表示第几页，pageSize表示页面有多少条数据
    data1 = {
        'on': 'true',
        'page': '2',
        'pageSize': '15',
        'productName': '',
        'conditionType': '1',
        'applyname': '',
        'applysn': '',
    }
    ## 对第一个url进行post请求，用来读取一共有多少页
    response = requests.post(url=url1,data=data1,headers=headers).json()
    page = response['pageCount']
    print("**********一共有："+str(page)+"页***********")
    ## 所有数据将会保存到这个集合统一写出
    result = []
    ## 一个页面循环一个，page就表示循环所有页面
    for i in range(0,page):
        ## 修改第一个表单的page的内容，表示第几页
        data1['page']=i+1
        print("**********当前正在爬取第"+str(data1['page'])+"页**********")
        ## 重新请求，获取当前页面的所有id值
        response = requests.post(url=url1, data=data1, headers=headers).json()
        for resp in response['list']:
            ## 第二个url需要提交的表单，每一个id提交一次，得到相应的json数据
            data2 = {
                "id":resp['ID']
            }
            da2 = requests.post(url=url2,data=data2).json()
            ## 把得到的数据加入到result这个列表里面
            result.append(da2)
        ## 因为测试原因，所以不需要爬取这么多，写一个跳出循环语句
        page_limit = 10
        if (data1['page'] == page_limit):
            print("**********一个爬取"+str(page_limit)+"页。需要爬取更多请修改page_limit这个变量！**********")
            break;
    ## 保存数据
    print("********正在保存数据....********")
    fp = open("./药监局/化妆品.json","w+",encoding="utf-8")
    json.dump(result,fp=fp,ensure_ascii=False)
    fp.close()
    print("保存完毕,爬取完成！")

if __name__ == '__main__':
    spider1()